home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-04-12 | 6.5 KB | 236 lines | [TEXT/PJMM] |
- unit HostFile;
-
- { Created June 15, 1989. }
-
- { Next four lines handle Debug, Names, Overflow and Range }
- { checking options in compiler. }
-
- interface
-
- uses
- Globals, HelloTabby;
-
- var
- CLPath, ULPath, MESSAGESPath, SysopName: STR255;
- NextLaunchDateRec: DateTimeRec;
- MsgPath: STR255;
- LowMsg, HiMsg, MSGTXTLength: longint;
- SectionCount: integer;
- Sections: array[1..255] of SectionHandle;
-
- procedure ReadConfig;
-
- procedure ReadMESSAGES;
-
- procedure MakeTextFile (FileName: STR255);
-
- procedure FrameDItem (dLog: DialogPtr; iNum: integer);
-
- implementation
-
- {----------------------------------------------------------------- }
-
- procedure FrameDItem;
-
- var
- iBox: Rect;
- iType: integer;
- iHandle: Handle;
- oldPenState: PenState;
-
- begin
- GetPenState(oldPenState);
- GetDItem(dLog, iNum, iType, iHandle, iBox);
- InsetRect(iBox, -4, -4);
- PenSize(3, 3);
- FrameRoundRect(iBox, 16, 16);
- SetPenState(oldPenState)
- end;
-
- {----------------------------------------------------------------- }
-
- procedure MakeTextFile;
-
- { Procedure sets up QUED-compatible text file }
-
- var
- fndrInfo: FInfo;
-
- begin
- Err := GetFInfo(FileName, vRefNum, fndrInfo);
- if Err = noErr then
- begin
- fndrInfo.fdType := 'TEXT';
- fndrInfo.fdCreator := 'QED1';
- Err := SetFInfo(FileName, vRefNum, fndrInfo);
- end
- else
- Err := Create(FileName, vRefNum, 'QED1', 'TEXT');
- end;
-
- {----------------------------------------------------------------- }
-
- procedure ReadMESSAGES;
-
- { Procedure reads the MESSAGES file }
-
- var
- MSCount, MSGRefNum: integer;
- MsgByte: signedByte;
- MsgString: STR255;
- CharsToSend: longint;
- OneEntry: SectionPtr;
- Counter: byte;
-
- begin
- Err := GetVol(nil, VRefNum); { Get volume ref # for default volume }
- Counter := 0;
- OneEntry := SectionPtr(NewPtr(SizeOf(Section)));
- Err := FSOpen(MESSAGESPath, VRefNum, MSGRefNum);
-
- CharsToSend := 50;
- Err := FSRead(MSGRefNum, CharsToSend, @MsgPath);
- if MsgPath <> '' then
- MsgPath := concat(MsgPath, ':');
-
- CharsToSend := 4;
- Err := SetFPos(MSGRefNum, fsFromStart, 50);
- Err := FSRead(MSGRefNum, CharsToSend, @LowMsg);
- Err := FSRead(MSGRefNum, CharsToSend, @HiMsg);
- Err := FSRead(MSGRefNum, CharsToSend, @MSGTXTLength);
-
- if Err = NoErr then
- for MSCount := 1 to 255 do
- begin
- Err := SetFPos(MSGRefNum, fsFromStart, (62 + (MSCount - 1) * 36));
- CharsToSend := 255;
- Err := FSRead(MSGRefNum, CharsToSend, Ptr(OneEntry));
- if OneEntry^.Name <> '' then
- begin
- Counter := succ(Counter);
- Sections[Counter] := SectionHandle(NewHandle(SizeOf(Section)));
- MoveHHI(Handle(Sections[Counter]));
- HLock(Handle(Sections[Counter]));
- Sections[Counter]^^.Name := OneEntry^.Name;
- Sections[Counter]^^.Number := MSCount;
- end;
- end;
- Err := FSClose(MSGRefNum);
- SectionCount := Counter;
- DisposPtr(Ptr(OneEntry));
- end;
-
- { ------------------------------------------------------ }
-
- procedure ReadConfig;
-
- { Reads Config file and returns Path:CallerLog, Path:UserLog, Path:MESSAGES, SysopName (all caps) and }
- { NextLaunchDateRec. }
-
- var
- AString: string;
- ALongInt: LongInt;
- ConfigRefNum: integer;
- FileEnd, CharsToSend, NextLaunchTime: longint;
- ConfigErr: OSErr;
- VolName: STR255;
- ConfigErrorFlag: boolean;
-
- begin
-
- ConfigErrorFlag := false;
-
- ConfigErr := GetVol(@VolName, VRefNum); { Get volume ref # for default volume }
- if (ConfigErr <> NoErr) then
- ConfigErrorFlag := true;
- MESSAGESPath := '';
- ULPath := '';
- CLPath := '';
- SysopName := 'SYSTEM OPERATOR';
- ConfigErr := FSOpen(':Config', VRefNum, ConfigRefNum);
- if (ConfigErr = NoErr) then
- begin
- ConfigErr := GetEOF(ConfigRefNum, FileEnd);
- if (ConfigErr = NoErr) then
- begin
- if (FileEnd > 317) then { Is file longer than our deepest SetFPos (it should be 349)? }
- begin
- CharsToSend := 41;
- ConfigErr := SetFPos(ConfigRefNum, fsFromStart, 57);
- if (ConfigErr <> NoErr) then
- ConfigErrorFlag := true;
- ConfigErr := FSRead(ConfigRefNum, CharsToSend, @AString);
- if (ConfigErr <> NoErr) then
- ConfigErrorFlag := true;
- if length(AString) > 0 then
- ULPath := AString;
- ULPath := concat(ULPath, ':UserLog');
-
- if (ConfigErrorFlag = false) then
- begin
- CharsToSend := 41;
- ConfigErr := SetFPos(ConfigRefNum, fsFromStart, 98);
- if (ConfigErr <> NoErr) then
- ConfigErrorFlag := true;
- ConfigErr := FSRead(ConfigRefNum, CharsToSend, @AString);
- if (ConfigErr <> NoErr) then
- ConfigErrorFlag := true;
- if length(AString) > 0 then
- CLPath := AString;
- CLPath := concat(CLPath, ':CallerLog');
- end;
-
- if (ConfigErrorFlag = false) then
- begin
- CharsToSend := 80;
- ConfigErr := SetFPos(ConfigRefNum, fsFromStart, 139);
- if (ConfigErr <> NoErr) then
- ConfigErrorFlag := true;
- ConfigErr := FSRead(ConfigRefNum, CharsToSend, @AString);
- if (ConfigErr <> NoErr) then
- ConfigErrorFlag := true;
- if length(AString) > 0 then
- MESSAGESPath := AString;
- MESSAGESPath := concat(MESSAGESPath, ':MESSAGES');
- end;
-
- if (ConfigErrorFlag = false) then
- begin
- CharsToSend := 31;
- ConfigErr := SetFPos(ConfigRefNum, fsFromStart, 317);
- if (ConfigErr <> NoErr) then
- ConfigErrorFlag := true;
- ConfigErr := FSRead(ConfigRefNum, CharsToSend, @AString);
- if (ConfigErr <> NoErr) then
- ConfigErrorFlag := true;
- if length(AString) > 0 then
- SysopName := AString
- end;
-
- if (ConfigErrorFlag = false) then
- begin
- CharsToSend := 4;
- ConfigErr := SetFPos(ConfigRefNum, fsFromStart, 308);
- if (ConfigErr <> NoErr) then
- ConfigErrorFlag := true;
- ConfigErr := FSRead(ConfigRefNum, CharsToSend, @ALongInt);
- if (ConfigErr <> NoErr) then
- ConfigErrorFlag := true;
- Secs2Date(ALongInt, NextLaunchDateRec);
- end;
-
- end { if FileEnd > 317 }
- else
- ConfigErrorFlag := true;
- end { Error on get eof of Config }
- else
- ConfigErrorFlag := true;
- end { Error on open Config }
- else
- ConfigErrorFlag := true;
- if ConfigErrorFlag then
- ExitToShell;
- ConfigErr := FSClose(ConfigRefNum);
- end;
- { ------------------------------------------------------ }
- end. { Unit }